package com.neusoft.hifly.dynamicds.multi;

import java.sql.SQLException;

/**
 * Title: 核心类库
 * <p>
 * Description: 租户的数据源
 * <p>
 * Copyright: 2019
 * <p>
 * Company: 东软汉枫
 *
 * @author lh_neu
 * @version 1.0.0
 */
public class MultiDataSourceContextHolder {
	// 对当前线程的操作-线程安全的
	private static final ThreadLocal<MultiOrganDataSource> organDataSource = new ThreadLocal<MultiOrganDataSource>();

	/**
	 * 调用此方法，切换数据源
	 * <p>
	 * 主要在线程、定时器等无法获取到session的地方进行设置
	 *
	 * @param dataSource
	 *            租户的数据源
	 */
	public static void setOrganDataSource(final MultiOrganDataSource dataSource) {
		MultiDataSourceContextHolder.organDataSource.set(dataSource);
	}

	/**
	 * 获取
	 *
	 * @return 租户的数据源
	 */
	public static MultiOrganDataSource getOrganDataSource() {
		return MultiDataSourceContextHolder.organDataSource.get();
	}

	/**
	 * 删除
	 */
	public static void clearOrganDataSource() {
		final MultiOrganDataSource db = MultiDataSourceContextHolder.organDataSource.get();
		try {
			if (db != null && !db.getDataSource().getConnection().isClosed()) {
				db.getDataSource().getConnection().close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		MultiDataSourceContextHolder.organDataSource.remove();
	}
}
